/*
 * LanzarConvocatoria.java
 *
 * Created on August 18, 2007, 3:05 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package hero.hook;

import hero.interfaces.BnNodeLocal;
import hero.interfaces.BnNodeValue;
import hero.interfaces.Constants;
import hero.interfaces.ProjectSession;
import hero.interfaces.ProjectSessionHome;
import hero.interfaces.ProjectSessionUtil;
import hero.interfaces.UserSession;
import hero.interfaces.UserSessionHome;
import hero.interfaces.UserSessionUtil;
import hero.util.HeroException;
import hero.util.HeroHookException;
import java.rmi.RemoteException;
import java.sql.Date;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.naming.NamingException;

/**
 *
 * @author kabad
 */
public class LanzarConvocatoria implements hero.hook.NodeHookI {

    /** Creates a new instance of LanzarConvocatoria */
    public LanzarConvocatoria() {
    }

    public String getMetadata() {
        return Constants.Nd.BEFORETERMINATE;
    }

    public void create(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void afterTerminate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onCancel(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void anticipate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onDeadline(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void afterStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onReady(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeTerminate(Object b, BnNodeLocal n) throws HeroHookException {
        System.out.println("se esta ejecutando el hook lanzar convocatoria before terminate");
        ProjectSessionHome prjHome;
        BnNodeValue actividad;
        UserSession usrSession;
        UserSessionHome usrHome;

        try {
            usrHome = UserSessionUtil.getHome();
            usrSession = usrHome.create();

            prjHome = (ProjectSessionHome) ProjectSessionUtil.getHome();
            ProjectSession prjSession = prjHome.create();
            prjSession.initProject(n.getBnProject().getName());
            String idActividad = prjSession.getProperty("idTempSolicitudActividad").getTheValue();
            prjSession.setNodeProperty("Enviar convocatoria a estudiantes", "idSolicitudActividad", idActividad);

            Vector listaFechas = new Vector();
            //setear fecha real, seteada por el profesor
            String strFecha = prjSession.getProperty("fechaMaxRegistro").getTheValue();
            java.sql.Date fecha = new Date(Long.parseLong(strFecha));
            System.out.print("FechaMaxRegistro: " + fecha);
//             listaFechas.add(fecha.getTime());  //fecha real
            listaFechas.add(System.currentTimeMillis() + new Long(3 * 60 * 1000)); // 3 minutos para pruebas
           prjSession.setNodeDeadlines("Registrar estudiantes", listaFechas);

           //informativo
            for (Object dead : prjSession.getNodeDeadlines("Registrar estudiantes")) {
                System.out.println("Deadline: getNodeDeadlines" + dead);
            }
        } catch (RemoteException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (HeroException ex) {
            ex.printStackTrace();
        }


    }
}
